package com.song.demo14springbootmybatisplus.pojo;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 用户对象 sys_user
 */
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User extends BaseEntity {

    // 对应数据库中的主键（uuid,自增id,雪花算法,redis,zookeeper!）
    // 分布式系统唯一ID生成方案汇总 - nick hao - 博客园 (cnblogs.com)
    // (https://www.cnblogs.com/haoxinyue/p/5208136.html)

    /*
        AUTO(0),    数据库id自增
        NONE(1),    未设置主键
        INPUT(2),   手动输入
        ASSIGN_ID(3),   分配id
        ASSIGN_UUID(4), 分配uuid
        弃用：
            @Deprecated
            ID_WORKER(3),   默认的全局唯一id
            @Deprecated
            ID_WORKER_STR(3),  字符串表示法
            @Deprecated
            UUID(4);   全局唯一id
     */

    @TableId(type = IdType.AUTO)   // 主键自增  注意：数据库id字段需要设置为主键+自增
    private Long Id;

    private Long userId;
    private String userName;

    //自动填充： 实现：新增、更新一条记录的时候，自动填充创建时间、更新时间 、打印日志   对象元处理器:MyMetaObjectHandler
    @TableField(fill = FieldFill.INSERT)   // 新增、更新时填充
    private String sex;

    //乐观锁实现：版本号or时间戳
    @Version
    private int version;

    //逻辑删除
    @TableLogic
    @TableField(value = "deleted", fill = FieldFill.INSERT)
    private int deleted;


}
